A (roughly) 24 hour hackathon in which my team developed "Dubious Studio" -- an AI assisted drawing program to accelerate the workflow and learning of artists.
Thank you to Max and Sirena
The idea of Dubious Studio came from a simple idea to bridge the gap between art creation and generative artificial intelligence.
One of my teammates, Max, is an artist as well as a EE major, and he came up with the initial idea. The name is from our third teammate, Sirena, who has a cat named Dubious :)
At the beginning of the event, we initially tried using Tkinter, because Max and I had experience using that in a previous project, but as we soon figured out, it just didn't have the capabilities we were looking for.
We were looking for a good portion of time before we stumbled across PyQt5, which led us to PyQt6, which we ended up using.
PyQt6 has a ton of features which made the process of implementing new features streamlined and fairly simple.
As with any project, we faced many challenges while developing Dubious. At first, we didn't know how far we could get in 24 hours, as this was mine and Max's first hackathon (Sirena's done one before), so we went with a single script that did everything. Around 8 hours into the project, we decided it was now or never to switch to a more object oriented approach, which, to be honest, we should have done from the beginning.
While less applicable to "normal" projects, another one of the challenges we faced was sleep. We only had 24 hours to complete our project, but we still had to sleep. We ended up sleeping in shifts, each for around 2-4 hours.
Another challenge we faced was a feature that we wanted to implement. We wanted to implement layers. However, in our limited time frame, we had to ditch the idea, as it would have taken too much time and resources to implement a feature that, in the short term, wouldn't have affected the final product that much.
One of the main features in our program is the ability to upload pictures/drawings you've made to receive back an AI interpretation of it. We ended up using the ClipDrop API, as it made what we wanted to do so much easier than hosting a server ourselves, training our own model on sketches, etc.
One hurdle we ran into was that with ClipDrop, as of the time of making Dubious, had a trial version, which was essentially 100 free calls, but then X cents per call after that, but while testing, we weren't keeping track of the calls we were making. This led to a bit of confusion and some worry over whether or not we'd run out of calls before we finished.
While we presented a "complete" project, I don't think any of us on the team were 100% satisfied with the project. We want to go back and add more features and optimize our code. To do this and ultimately add the features we want to, we've decided that to do so, we'd need to switch from Python to C++, which would mean a rewrite of the entire program from scratch. It's not impossible, but it's certainly a large task.
Some features we'd like to add are layers, cleaner UI, more brushes, implement XCF (an open source file format that GIMP uses) to promote cross-application workflows, and potentially monetize the program in order to pay for the API calls.
I believe I can speak for my other two team members when I say we learned a LOT over this 24 hour period. We learned how to use PyQt6, execute API calls, how to make a UI, how to make a paint program, and how to tie all of that together into one cohesive final product that we were proud of sharing with others. Ultimately I believe this was a great learning experience, and I hope to participate in more hackathons in the future.